package com.zjp;

import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;

import java.io.IOException;
import java.math.BigDecimal;

// 自定义的 TypeAdapter 用于处理 BigDecimal 类型的数据
class BigDecimalTypeAdapter extends TypeAdapter<BigDecimal> {
    @Override
    public void write(JsonWriter out, BigDecimal value) throws IOException {
        if (value == null) {
            out.nullValue();
            return;
        }
        // 将 BigDecimal 类型的数据以字符串形式写入 JSON
        out.value(value.stripTrailingZeros().toPlainString());
    }

    @Override
    public BigDecimal read(JsonReader in) throws IOException {
        if (in.peek() == JsonToken.NULL) {
            in.nextNull();
            return null;
        }
        // 从 JSON 中读取字符串，并转换为 BigDecimal 类型
        String value = in.nextString();
        return new BigDecimal(value).stripTrailingZeros();
    }
}